#include<my_header.h>
#include"queue.h"
//为什么不是结构体数组
//是因为线程首先是共享数据段的数据
//也就是全局结构体是所有线程都能拿到的
//所以其实一个结构体就可以
//使用的也是一个队列和一个锁 一个条件变量
//但是这些数据是作为共享数据
//为了避免数据共享出现问题所以要
//使用条件变量和锁
typedef struct thread_s{
    pthread_t *thread_id;//创建一个数组存储多个线程
    int num;   //具体有几个子线程
    Queue queue;//暂时存放的队列 
                //理解一下队列的使用 相当于是桌子 放主线程
                //收到的连接 不需要主线程管控
                //子线程队列中谁有就直接拿 然后加锁
                //队列没有 子线程就条件变量阻塞
    pthread_mutex_t lock;   //锁
    pthread_cond_t cont;  //条件变量
    int is_exit;//是否退出
    
}threads;
//创建线程
int initPthread(threads *thread_s,int num);

//创建连接
int initSocket(int *socketfd);

//监听连接
int addEpoll(int epollfd,int fd);

//入队
int push_queue(int netfd,Queue *q);

//出队
int pop_queue(Queue *q);

void*func(void*);

int sendFile(int netfd);
